剑指 Offer 44. 数字序列中某一位的数字

数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中，第5位（从下标0开始计数）是5，第13位是1，第19位是4，等等。
请写一个函数，求任意第n位对应的数字。

https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/description/?favorite=xb9nqhhg


//推理
//digit                 start               idex_counnt
class Solution {
public:
    int findNthDigit(int n) 
    {
        if(n==0)
        {
            return 0;
        }

        int digit=1;//记录位数
        long start=1;//记录数位起始数
        long index_count=digit*start*9;//某个数位内数个数

        while(n>index_count)
        {
            n-=index_count;
            digit++;
            start*=10;
            index_count=digit*start*9;
        }//调整后,digit为n的数位，起始位置为n数位起始，n为数位起始余下

        //算出n对应哪个数字
        long num=start+(n-1)/digit;
        //计算n对应数字的第几位
        int remaider=(n-1)%digit;
        
        int ans=0;
        //得到数的某位  将数字转为字符串类型
        string _num=to_string(num);
        return int(_num[remaider]-'0');
    }
};